package reflect;

import pojo.Person;

import java.lang.reflect.Method;
import java.util.Scanner;
/**
* 使用反射实例化对象
* */
public class ReflectDemo4 {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        //传统方式实例化对象:new
        Person p = new Person();
        System.out.println(p);
        //利用反射实例化对象:动态化
        /*
         * pojo.Person
         * java.util.ArrayList
         * java.util.Date(日期)
         * */
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入类名:");
        String className = scanner.nextLine();
        //反射的第一步一定是获取要操作的类的Class类实例
        Class cls = Class.forName(className);
        //newInstance() 可以调用无参且公开的构造器,并将其实例化
        //InstantiationException 实例化异常
        //IllegalAccessException 非法访问异常
        Object o = cls.newInstance();
        System.out.println(o);
    }
}
